home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / comm / mail / Mutt089src.lha / Mutt-0.89i-AMIGA / src / pgp.h < prev    next >
C/C++ Source or Header  |  1998-01-28  |  3KB  |  105 lines

  1. /*
  2.  * Copyright (C) 1996,1997 Michael R. Elkins <me@cs.hmc.edu>
  3.  * 
  4.  *     This program is free software; you can redistribute it and/or modify
  5.  *     it under the terms of the GNU General Public License as published by
  6.  *     the Free Software Foundation; either version 2 of the License, or
  7.  *     (at your option) any later version.
  8.  * 
  9.  *     This program is distributed in the hope that it will be useful,
  10.  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *     GNU General Public License for more details.
  13.  * 
  14.  *     You should have received a copy of the GNU General Public License
  15.  *     along with this program; if not, write to the Free Software
  16.  *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  */ 
  18.  
  19. #ifdef _PGPPATH
  20.  
  21. #include "state.h"
  22.  
  23. #define PGPENCRYPT 1
  24. #define PGPSIGN    2
  25. #define PGPKEY     4
  26.  
  27. #define KEYFLAG_CANSIGN (1 << 0)
  28. #define KEYFLAG_CANENCRYPT (1 << 1)
  29. #define KEYFLAG_EXPIRED (1 << 8)
  30. #define KEYFLAG_REVOKED (1 << 9)
  31. #define KEYFLAG_DISABLED (1 << 10)
  32. #define KEYFLAG_SUBKEY (1 << 11)
  33. #define KEYFLAG_CRITICAL (1 << 12)
  34. #define KEYFLAG_PREFER_ENCRYPTION (1 << 13)
  35. #define KEYFLAG_PREFER_SIGNING (1 << 14)
  36.  
  37. typedef struct keyinfo
  38. {
  39.   char *keyid;
  40.   LIST *address;
  41.   short flags;
  42.   short keylen;
  43.   unsigned long gen_time;
  44.   const char *algorithm;
  45.   struct keyinfo *mainkey;
  46.   struct keyinfo *next;
  47. } KEYINFO;
  48.  
  49. typedef struct pgp_uid
  50. {
  51.   char *addr;
  52.   short trust;
  53. } PGPUID;
  54.  
  55. enum pgp_version {
  56.   PGP2, PGP3, PGP_G10, PGP_UNKNOWN
  57. };
  58.  
  59. WHERE char Pgp[_POSIX_PATH_MAX];
  60. WHERE char PgpSignAs[SHORT_STRING] INITVAL ({0});
  61. WHERE short PgpTimeout INITVAL (300); /* 5 minutes */
  62. WHERE char PgpPubring[_POSIX_PATH_MAX];
  63. WHERE char PgpSecring[_POSIX_PATH_MAX];
  64. WHERE char PgpVersion[SHORT_STRING] INITVAL ("pgp2");
  65.  
  66. BODY *pgp_decrypt_part (BODY *, STATE *, FILE *);
  67. BODY *pgp_make_key_attachment (char *);
  68.  
  69. int pgp_query (BODY *);
  70. int pgp_valid_passphrase (void);
  71. int pgp_protect (HEADER *);
  72. int mutt_check_pgp (HEADER *h);
  73.  
  74. enum pgp_version pgp_version(void);
  75.  
  76. void pgp_extract_keys_from_attachment_list (FILE *fp, int tag, BODY *top);
  77. void pgp_extract_keys_from_messages(HEADER *hdr);
  78. void application_pgp_handler (BODY *, STATE *);
  79. void pgp_signed_handler (BODY *, STATE *);
  80. void pgp_encrypted_handler (BODY *, STATE *);
  81. void pgp_void_passphrase (void);
  82. void mutt_forget_passphrase (void);
  83. void pgp_closedb (KEYINFO *);
  84.  
  85. char *pgp_keyid(KEYINFO *);
  86.  
  87. char *pgp_ask_for_key (const char *, KEYINFO *, char *, char *, short);
  88.  
  89. char *ki_getkeybyaddr (ADDRESS *, KEYINFO *, short);
  90. char *ki_getkeybystr (char *, KEYINFO *, short);
  91.  
  92. KEYINFO *pgp_read_keyring(const char *);
  93.  
  94. pid_t pgp_invoke_decode(FILE **, FILE **, FILE **, int, int, int, const char *, int);
  95. pid_t pgp_invoke_verify(FILE **, FILE **, FILE **, int, int, int, const char *, const char *);
  96. pid_t pgp_invoke_decrypt(FILE **, FILE **, FILE **, int, int, int, const char *);
  97. pid_t pgp_invoke_sign(FILE **, FILE **, FILE **, int, int, int, const char *);
  98. pid_t pgp_invoke_encrypt(FILE **, FILE **, FILE **, int, int, int, const char *, const char *, int);
  99. void  pgp_invoke_extract(const char *);
  100. pid_t pgp_invoke_verify_key(FILE **, FILE **, FILE **, int, int, int, const char *);
  101. pid_t pgp_invoke_extract_key(FILE **, FILE **, FILE **, int, int, int, const char *);
  102.  
  103.  
  104. #endif /* _PGPPATH */
  105.